#Boa:Dialog:Dialog1

import wx
import wx.lib.masked.numctrl
import consultasBD
import Mensaje
import time
import datetime
import utiles
import ChequesAlta

def create(parent):
    return Dialog1(parent)

[wxID_DIALOG1, wxID_DIALOG1ACEPTAR, wxID_DIALOG1CANCELAR, 
 wxID_DIALOG1COMBOPROVEEDOR, wxID_DIALOG1DESTINATARIO, wxID_DIALOG1INVALOR, 
 wxID_DIALOG1MONTOALTA, wxID_DIALOG1PROVEEDOR, wxID_DIALOG1RADIOBOX1, 
 wxID_DIALOG1STATICLINE1, wxID_DIALOG1STATICTEXT1, wxID_DIALOG1STATICTEXT2, 
 wxID_DIALOG1STATICTEXT3, wxID_DIALOG1STATICTEXT4, wxID_DIALOG1STATICTEXT5, 
 wxID_DIALOG1TIPOALTA, wxID_DIALOG1TXTVALOR, 
] = [wx.NewId() for _init_ctrls in range(17)]

class Dialog1(wx.Dialog):
    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wx.Dialog.__init__(self, id=wxID_DIALOG1, name='', parent=prnt,
              pos=wx.Point(425, 275), size=wx.Size(439, 247),
              style=wx.DEFAULT_DIALOG_STYLE,
              title='Ingreso de Movimientos de Caja')
        self.SetClientSize(wx.Size(431, 220))

        self.staticText1 = wx.StaticText(id=wxID_DIALOG1STATICTEXT1,
              label='Tipo de Alta:', name='staticText1', parent=self,
              pos=wx.Point(40, 8), size=wx.Size(62, 13), style=0)

        self.tipoalta = wx.ComboBox(choices=["Egreso", "Ingreso"],
              id=wxID_DIALOG1TIPOALTA, name='tipoalta', parent=self,
              pos=wx.Point(112, 8), size=wx.Size(130, 21), style=0)
        self.tipoalta.SetLabel('')

        self.staticText2 = wx.StaticText(id=wxID_DIALOG1STATICTEXT2,
              label='Origen de la misma:', name='staticText2', parent=self,
              pos=wx.Point(8, 48), size=wx.Size(95, 13), style=0)

        self.destinatario = wx.ComboBox(choices=[], id=wxID_DIALOG1DESTINATARIO,
              name='destinatario', parent=self, pos=wx.Point(112, 48),
              size=wx.Size(160, 21), style=0)

        self.staticText3 = wx.StaticText(id=wxID_DIALOG1STATICTEXT3,
              label='Monto:', name='staticText3', parent=self, pos=wx.Point(288,
              88), size=wx.Size(35, 13), style=0)

        self.aceptar = wx.Button(id=wxID_DIALOG1ACEPTAR, label='Aceptar',
              name='aceptar', parent=self, pos=wx.Point(192, 176),
              size=wx.Size(75, 23), style=0)
        self.aceptar.Bind(wx.EVT_BUTTON, self.OnAceptarButton,
              id=wxID_DIALOG1ACEPTAR)

        self.cancelar = wx.Button(id=wxID_DIALOG1CANCELAR, label='Cancelar',
              name='cancelar', parent=self, pos=wx.Point(56, 176),
              size=wx.Size(75, 23), style=0)

        self.montoAlta = wx.lib.masked.numctrl.NumCtrl(id=wxID_DIALOG1MONTOALTA,
              name='montoAlta', parent=self, pos=wx.Point(344, 88),
              size=wx.Size(71, 22), style=0, value=0)
        self.montoAlta.SetIntegerWidth(5)
        self.montoAlta.SetFractionWidth(2)
        self.montoAlta.SetDecimalChar('.')
        self.montoAlta.SetGroupChar(',')
        self.montoAlta.SetGroupDigits(False)

        self.staticText4 = wx.StaticText(id=wxID_DIALOG1STATICTEXT4,
              label='Valor:', name='staticText4', parent=self, pos=wx.Point(16,
              88), size=wx.Size(29, 13), style=0)
        self.staticText4.SetToolTipString('staticText4')
        self.staticText4.SetFont(wx.Font(8, wx.SWISS, wx.NORMAL, wx.NORMAL,
              True, 'Tahoma'))

        self.txtvalor = wx.StaticText(id=wxID_DIALOG1TXTVALOR, label='',
              name='txtvalor', parent=self, pos=wx.Point(216, 88),
              size=wx.Size(64, 13), style=0)

        self.invalor = wx.TextCtrl(id=wxID_DIALOG1INVALOR, name='invalor',
              parent=self, pos=wx.Point(48, 88), size=wx.Size(56, 21), style=0,
              value='')
        self.invalor.Bind(wx.EVT_KILL_FOCUS, self.OnInvalorKillFocus)

        self.staticText5 = wx.StaticText(id=wxID_DIALOG1STATICTEXT5,
              label='Valor Cargando:', name='staticText5', parent=self,
              pos=wx.Point(128, 88), size=wx.Size(79, 13), style=0)
        self.staticText5.SetFont(wx.Font(8, wx.SWISS, wx.NORMAL, wx.NORMAL,
              True, 'Tahoma'))

        self.proveedor = wx.CheckBox(id=wxID_DIALOG1PROVEEDOR,
              label='Pago a Proveedor', name='proveedor', parent=self,
              pos=wx.Point(8, 136), size=wx.Size(112, 16), style=0)
        self.proveedor.SetValue(False)
        self.proveedor.Show(False)

        self.comboProveedor = wx.ComboBox(choices=[],
              id=wxID_DIALOG1COMBOPROVEEDOR, name='comboProveedor', parent=self,
              pos=wx.Point(136, 136), size=wx.Size(130, 21), style=0,
              value='0')
        self.comboProveedor.SetLabel('0')
        self.comboProveedor.Show(False)
        self.comboProveedor.Bind(wx.EVT_COMBOBOX, self.OnComboProveedorCombobox,
              id=wxID_DIALOG1COMBOPROVEEDOR)

        self.staticLine1 = wx.StaticLine(id=wxID_DIALOG1STATICLINE1,
              name='staticLine1', parent=self, pos=wx.Point(9, 120),
              size=wx.Size(407, 4), style=0)

        self.radioBox1 = wx.RadioBox(choices=['En 1', 'En 2'],
              id=wxID_DIALOG1RADIOBOX1, label='Al server', majorDimension=1,
              name='radioBox1', parent=self, pos=wx.Point(320, 128),
              size=wx.Size(104, 56), style=wx.RA_SPECIFY_COLS)
        self.radioBox1.Show(False)

    def __init__(self, parent,fecha):
        self._init_ctrls(parent)
        self.padre = parent
        self.defineCombos()
        self.fecha = fecha
        
    
    def defineCombos(self):
        list = []
        condicionSQL = "1"
        resultados = consultasBD.executaSQL(self,"*","cajachicadestinatarios",condicionSQL)
        for r in resultados:
                list.append(""+str(r[0])+" -- "+str(r[1])+"")
        
        self.destinatario.SetItems(list)
        
        #Combo proveedores
        list2 = []
        condicionSQL2 = "1 order by nombre asc"
        resultados2 = consultasBD.executaSQL(self,"nombre","proveedor",condicionSQL2)
        for r in resultados2:
                list2.append(str(r[0]))
        
        self.comboProveedor.SetItems(list2)
        


    def OnAceptarButton(self, event):
        tablaSQL = "cajachica"
        valor = self.tipoalta.Value
        destina = self.destinatario.Value
        monto = self.montoAlta.Value
        idvalor = self.invalor.Value
        ifproveedor = self.proveedor.GetValue()
        nombreProveedor = self.comboProveedor.GetValue()
        
        if valor != "" and destina != "" and idvalor != "" and monto != "":
            if ifproveedor==True:
                if idvalor =="CH" or idvalor =="ch":
                    #guarda el cheque
                    dlg5 = ChequesAlta.cheques(self)
                    try:    
                        dlg5.indestinatario.ChangeValue(str(nombreProveedor))
                        dlg5.importe.ChangeValue(str(monto))
                        dlg5.ShowModal()
                    finally:
                        dlg5.Destroy()
                
                total1=0
                total2=0
                
                #fecha actual
                fecha = time.strftime("%Y-%m-%d %H:%M-%S")
                
                #si es en 1 o 2
                if self.radioBox1.Selection==0: 
                    total1=monto
                    total2=0.00
                    en1oen2=1
                if self.radioBox1.Selection==1: 
                    total1=0.00
                    total2=monto
                    en1oen2=2
                
                #saca el nro de registro
                sql2 = "select idregistro from proveedor where idproveedor='%s'" % str(self.idproveedor)
                print sql2
                resultado = consultasBD.ordenCrudaResultDict(sql2)

                print str(resultado["idregistro"])
                self.registro = int(resultado["idregistro"])+1 
                
                registro=self.registro
                sql = "INSERT INTO comprasaldos (idoperacion,fecha,idproveedor,monto1,monto2,nrofactura,cantproductos,idforma1o2,observaciones,operador,temporada,idregistro) VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s','%s','%s') "% (str("PAGO PARTICULAR : ")+str(valor)+str(" - ")+str(idvalor),fecha,self.idproveedor,total1,total2,"",0,en1oen2,"","",str("INVIERNO2011"),registro)
                print sql
                consultasBD.executaSinCommit(None, sql)
                
                sqlupdate = "UPDATE proveedor set idregistro=idregistro+1 where idproveedor='%s'" % (self.idproveedor)
                resultado = consultasBD.executaSinCommit(None,sqlupdate)
                # FIN AGRAGADO 2010 ********************************************************************************    
                dlg = Mensaje.Mensaje(self,"Se ingreso CORRECTAMENTE EL ALTA")
                self.Close()   
                    
                
                
                
            else:    
                print "AACCCCEPTAR"
                camposSQL = "('','"+str(self.fecha)+"','"+str(valor)+"','"+str(destina)+"','"+str(self.invalor.Value)+"',"+str(float(monto))+")"
                consultasBD.executaInsertSQL(self,tablaSQL,camposSQL)
                
                dlg = Mensaje.Mensaje(self,"Se ingreso CORRECTAMENTE EL ALTA")
                self.Close()                            
        else:
            print "EEELLLSE"
            utiles.mensaje(self,"Verifique que estan cargados todos los campos")        
                        
    def OnInvalorKillFocus(self, event):
        codipago = self.invalor.Value
        pagoSQL = "nombre = '%s'" % (codipago)
        
        cuenta = consultasBD.cuentafilas(self,"*","valores",pagoSQL)
        #resultados = consultasBD.executaSQL(self,"*","valores",pagoSQL)
        if cuenta >= 1:
            resultados = consultasBD.executaSQL(self,"*","valores",pagoSQL)             
            for r in resultados:
                self.txtvalor.SetLabel(r[2]) #

    def OnComboProveedorCombobox(self, event):
        #guarda el saldo 
        nombreProveedor = self.comboProveedor.GetValue()
        SQL= "SELECT idproveedor FROM proveedor WHERE nombre='%s'" % (nombreProveedor)
        resultados = consultasBD.ordenCrudaResultDict(SQL)
        self.idproveedor = resultados["idproveedor"]
        #self.insaldo.Label(str(resultados["saldo"]))

                
